#ifndef __OLORIN_PROGRAM__
#define __OLORIN_PROGRAM__

#include <Shader.hpp>
#include <Attribute.hpp>

namespace Olorin
{
	namespace Graphics
	{
		class DLLAPI Program
		{
		protected:
			GLuint programID;
			bool compiled;
		public:
			Program();
			virtual ~Program();
				
			const GLuint& getProgramID() const;
				
			const bool attach(const Shader& shader);
			const bool detach(const Shader& shader);
			const bool compile();
				
			const UniformAttribute getUniformAttribute(const char* name);
			const VertexAttribute getVertexAttribute(const char* name);
				
			void begin();
			void end();				
		};
	}
}

#endif